#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
// 主子线程共享全局变量

void *thread_func(void *arg)
{
  int i = (int)arg;
  if (i == 2)
  {
    pthread_exit((void *)"thread exit"); // 退出线程
    // return NULL; // 返回到函数调用者
    // exit(0);  // 退出进程(会把所有线程杀死)
  }

  sleep(i);
  printf("thread func%d is running,thread id is %lu\n", i, pthread_self());
  return NULL;
}

int main()
{

  pthread_t id;
  int i;
  // 循环创建5个线程,打印线程id

  for (i = 0; i < 5; i++)
  {
    int ret = pthread_create(&id, NULL, thread_func, (void *)i);
    if (ret != 0)
    {
      perror("pthread_create " + i);
      exit(1);
    }
  }

  sleep(i);
  printf("main thread id is %lu\n", pthread_self());

  pthread_exit(NULL); // 退出主线程
}